package actions.admin;

import java.io.Serializable;
import java.util.List;

import javax.persistence.EntityManager;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.datamodel.DataModel;
import org.jboss.seam.annotations.datamodel.DataModelSelection;

import domain.Foto;
import domain.Restaurante;

@Name("revisar")
@Scope(ScopeType.SESSION)
@SuppressWarnings("all")
public class RevisarRestaurantesAction implements Serializable {

	@In
	EntityManager em;

	@DataModel
	private List restaurantesRevisar;

	@DataModelSelection("restaurantesRevisar")
	private Restaurante restauranteSeleccionado;

	@DataModel
	private List<Foto> fotosRestaurante;

	private String fotoSeleccionada;
	private boolean mostrarRestaurante;

	// listado de restaurantes.
	@Factory("restaurantesRevisar")
	public List<Restaurante> restaurantesRevisar() {
		this.mostrarRestaurante = false;
		restaurantesRevisar = em.createQuery(
				"From Restaurante r where r.revisado = 0").getResultList();
		return restaurantesRevisar;
	}

	// mostrar restaurant

	public void mostrarRestaurante() {
		fotosRestaurante = em.createQuery(
				"From Foto f where f.restaurante.restaurante = ?")
				.setParameter(1, restauranteSeleccionado.getRestaurante())
				.getResultList();
		if (!fotosRestaurante.isEmpty())
			fotoSeleccionada = fotosRestaurante.get(0).getRuta();
		this.setMostrarRestaurante(true);
	}

	public void seleccionarFoto(String seleccion) {
		this.setFotoSeleccionada(seleccion);
	}

	// aprobar
	public void aprobarRestaurante() {
		restauranteSeleccionado = em.find(Restaurante.class,
				restauranteSeleccionado.getRestaurante());
		restauranteSeleccionado.setRevisado(true);
		em.persist(restauranteSeleccionado);
		restaurantesRevisar = null;
		fotosRestaurante.clear();
		this.setMostrarRestaurante(false);
	}

	// denegar
	public void denegarRestaurante() {
		restauranteSeleccionado = em.find(Restaurante.class,
				restauranteSeleccionado.getRestaurante());
		restauranteSeleccionado.setDenegado(true);
		em.persist(restauranteSeleccionado);
		restaurantesRevisar = null;
		fotosRestaurante.clear();
		this.setMostrarRestaurante(false);
	}

	public List<Foto> getFotosRestaurante() {
		return fotosRestaurante;
	}

	public void setFotosRestaurante(List<Foto> fotosRestaurante) {
		this.fotosRestaurante = fotosRestaurante;
	}
	public Restaurante getRestauranteSeleccionado() {
		return restauranteSeleccionado;
	}

	public void setRestauranteSeleccionado(Restaurante restauranteSeleccionado) {
		this.restauranteSeleccionado = restauranteSeleccionado;
	}

	public String getFotoSeleccionada() {
		return fotoSeleccionada;
	}

	public void setFotoSeleccionada(String fotoSeleccionada) {
		this.fotoSeleccionada = fotoSeleccionada;
	}

	public boolean isMostrarRestaurante() {
		return mostrarRestaurante;
	}

	public void setMostrarRestaurante(boolean mostrarRestaurante) {
		this.mostrarRestaurante = mostrarRestaurante;
	}
}
